package shuati.od24D;

import java.util.ArrayList;
import java.util.Scanner;

/**
 * @author : LdLtd
 * @Date : 2024/7/10
 * @Description:
 * 一、题目描述
 * 公司用一个字符串来标识员工的出勤信息
 *
 * absent：缺勤
 * late：迟到
 * leaveearly：早退
 * present：正常上班
 * 现需根据员工出勤信息,判断本次是否能获得出勤奖，能获得出勤奖的条件如下：
 *
 * 缺勤不超过1次
 * 没有连续的迟到/早退
 * 任意连续7次考勤 缺勤/迟到/早退 不超过3次。
 * 二、输入描述
 * 用户的考勤数据字符串记录条数 >=1
 *
 * 输入字符串长度 <10000 ;
 *
 * 不存在非法输入
 *
 * 如：
 *
 * 2
 * present
 * present absent present present leaveearly present absent
 *
 * 三、输出描述
 * 根据考勤数据字符串，如果能得到考勤奖输出true否则输出false，对于输出示例的结果应为true false
 *
 * 四、解题思路
 * 题目要求根据员工的出勤信息判断是否能获得出勤奖，需要满足以下条件：
 *
 * 缺勤不超过1次；
 * 没有连续的迟到或早退；
 * 任意连续7次考勤中，缺勤、迟到或早退的次数不超过3次。
 * 算法流程：
 *
 * 读取输入的考勤数据字符串记录条数 n；
 * 创建一个字符串数组 records，用于存储每条考勤数据字符串；
 * 遍历输入，依次读取每条考勤数据字符串，将其存储到 records 数组中；
 * 创建一个 ArrayList 对象 res，用于存储每条考勤数据字符串是否能获得出勤奖的结果；
 * 遍历 records数组，对每条考勤数据字符串进行如下操作，调用 extracted 方法判断该条考勤数据字符串是否能获得出勤奖，并将结果转换为字符串类型添加到 res 中；
 * 将 res 中存储的结果转换为字符串并输出。
 */
public class Extracted {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt();
        scanner.nextLine();


        String[] records = new String[n];
        for (int i = 0; i < n; i++) {
            records[i] = scanner.nextLine();
        }

        ArrayList<String> res = new ArrayList<>(n);
        for (String record : records) {
            res.add(String.valueOf(extracted(record.split(" "))));
        }

        System.out.println(String.join(" ", res));
    }

    private static boolean extracted(String[] s) {
        // 1.缺勤不超过1次
        for (int j = 0; j < s.length; j++) {
            if ("absent".equals(s[j])) {
                return false;
            }
        }

        // 2.没有连续的迟到/早退
        if (s.length >= 2) {
            for (int i = 1; i < s.length; i++) {
                String yesterday = s[i - 1];
                String today = s[i];
                if (("late".equals(yesterday) || "leaveearly".equals(yesterday))
                        && ("late".equals(today) || "leaveearly".equals(today))) {
                    return false;
                }
            }
        }

        // 3.任意连续7次考勤 缺勤/迟到/早退 不超过3次
        if (s.length >= 7) {
            for (int i = 0; i < s.length; i++) {
                int count = 0;
                if (i + 7 > s.length) {
                    break;
                }
                for (int j = i; j < i + 7; j++) {
                    String today = s[j];
                    if ("absent".equals(today) || "late".equals(today) || "leaveearly".equals(today)) {
                        count++;
                        if (count >= 3) {
                            return false;
                        }
                    }
                }
            }
        }
        return true;
    }
}
